// 缺陷管理 - 所有缺陷数据都在这里统一管理
import type { Bug } from '../types/bug';

export const bugData: Bug[] = [
  {
    id: 1,
    code: 'BUG-001',
    title: '登录页面验证码不显示',
    description: '用户登录页面的验证码图片无法正常显示',
    type: '功能缺陷',
    severity: '高',
    priority: '高',
    status: '已解决',
    project: 'KZ-DevOps平台',
    assignee: '李四',
    reporter: '张三',
    environment: 'Chrome 120.0, Windows 11',
    steps: '1. 打开登录页面\n2. 查看验证码区域\n3. 验证码图片无法显示',
    expectedResult: '验证码图片正常显示',
    actualResult: '验证码图片显示为空白',
    attachments: [],
    relatedTask: 'TASK-001',
    createdAt: '2024-01-05',
    updatedAt: '2024-01-08',
    resolvedAt: '2024-01-08'
  },
  {
    id: 2,
    code: 'BUG-002',
    title: '项目管理页面加载缓慢',
    description: '项目管理页面在数据量较大时加载速度明显变慢',
    type: '性能缺陷',
    severity: '中',
    priority: '中',
    status: '处理中',
    project: 'KZ-DevOps平台',
    assignee: '王五',
    reporter: '李四',
    environment: 'Firefox 121.0, macOS 14.2',
    steps: '1. 打开项目管理页面\n2. 页面加载时间超过5秒',
    expectedResult: '页面应在3秒内完成加载',
    actualResult: '页面加载时间超过5秒',
    attachments: [],
    relatedTask: 'TASK-002',
    createdAt: '2024-01-10',
    updatedAt: '2024-01-25'
  },
  {
    id: 3,
    code: 'BUG-003',
    title: '移动端登录页面样式错乱',
    description: '在移动设备上登录页面布局显示异常',
    type: '界面缺陷',
    severity: '中',
    priority: '高',
    status: '待验证',
    project: 'KZ-DevOps平台',
    assignee: '赵六',
    reporter: '张三',
    environment: 'Safari 17.2, iOS 17.2',
    steps: '1. 在iPhone上打开登录页面\n2. 观察页面布局',
    expectedResult: '页面布局正常显示',
    actualResult: '输入框和按钮布局错乱',
    attachments: [],
    relatedTask: 'TASK-005',
    createdAt: '2024-01-15',
    updatedAt: '2024-01-25'
  },
  {
    id: 4,
    code: 'BUG-004',
    title: '用户权限验证绕过漏洞',
    description: '发现权限验证存在绕过漏洞',
    type: '安全缺陷',
    severity: '紧急',
    priority: '紧急',
    status: '已分配',
    project: 'KZ-DevOps平台',
    assignee: '钱七',
    reporter: '王五',
    environment: 'Chrome 120.0, Windows 11',
    steps: '1. 使用普通用户登录\n2. 尝试访问管理员功能\n3. 发现可以绕过权限验证',
    expectedResult: '权限验证应阻止未授权访问',
    actualResult: '可以绕过权限验证访问管理员功能',
    attachments: [],
    relatedRequirement: 'REQ-005',
    createdAt: '2024-01-20',
    updatedAt: '2024-01-25'
  },
  {
    id: 5,
    code: 'BUG-005',
    title: 'IE浏览器兼容性问题',
    description: '系统在IE浏览器上无法正常使用',
    type: '兼容性缺陷',
    severity: '低',
    priority: '低',
    status: '新建',
    project: 'KZ-DevOps平台',
    assignee: '',
    reporter: '赵六',
    environment: 'IE 11, Windows 10',
    steps: '1. 在IE浏览器中打开系统\n2. 尝试使用基本功能',
    expectedResult: '系统应能在IE浏览器中正常使用',
    actualResult: '页面布局和功能均无法正常使用',
    attachments: [],
    createdAt: '2024-01-25',
    updatedAt: '2024-01-25'
  }
];

// 生成更多测试数据
for (let i = 6; i <= 50; i++) {
  const types: Array<'功能缺陷' | '性能缺陷' | '安全缺陷' | '界面缺陷' | '兼容性缺陷'> = ['功能缺陷', '性能缺陷', '安全缺陷', '界面缺陷', '兼容性缺陷'];
  const severities: Array<'低' | '中' | '高' | '紧急'> = ['低', '中', '高', '紧急'];
  const priorities: Array<'低' | '中' | '高' | '紧急'> = ['低', '中', '高', '紧急'];
  const statuses: Array<'新建' | '已分配' | '处理中' | '待验证' | '已解决' | '已关闭' | '已拒绝'> = ['新建', '已分配', '处理中', '待验证', '已解决', '已关闭', '已拒绝'];
  const projects = ['KZ-DevOps平台', 'CRM系统', 'ERP系统', 'OA系统'];
  const assignees = ['张三', '李四', '王五', '赵六', '钱七', ''];
  const reporters = ['张三', '李四', '王五', '赵六', '钱七'];
  
  bugData.push({
    id: i,
    code: `BUG-${i.toString().padStart(3, '0')}`,
    title: `缺陷标题${i}`,
    description: `这是第${i}个缺陷的详细描述`,
    type: types[Math.floor(Math.random() * types.length)],
    severity: severities[Math.floor(Math.random() * severities.length)],
    priority: priorities[Math.floor(Math.random() * priorities.length)],
    status: statuses[Math.floor(Math.random() * statuses.length)],
    project: projects[Math.floor(Math.random() * projects.length)],
    assignee: assignees[Math.floor(Math.random() * assignees.length)],
    reporter: reporters[Math.floor(Math.random() * reporters.length)],
    environment: 'Chrome 120.0, Windows 11',
    steps: '1. 第一步\n2. 第二步\n3. 第三步',
    expectedResult: '预期结果',
    actualResult: '实际结果',
    attachments: [],
    relatedTask: `TASK-${Math.floor(Math.random() * 50) + 1}`,
    createdAt: `2024-${(Math.floor(Math.random() * 12) + 1).toString().padStart(2, '0')}-${(Math.floor(Math.random() * 28) + 1).toString().padStart(2, '0')}`,
    updatedAt: `2024-${(Math.floor(Math.random() * 12) + 1).toString().padStart(2, '0')}-${(Math.floor(Math.random() * 28) + 1).toString().padStart(2, '0')}`,
    resolvedAt: Math.random() > 0.7 ? `2024-${(Math.floor(Math.random() * 12) + 1).toString().padStart(2, '0')}-${(Math.floor(Math.random() * 28) + 1).toString().padStart(2, '0')}` : undefined
  });
}

// 缺陷状态分布数据
export const bugStatusData = {
  labels: ['新建', '已分配', '处理中', '待验证', '已解决', '已关闭', '已拒绝'],
  datasets: [
    {
      data: [
        bugData.filter(b => b.status === '新建').length,
        bugData.filter(b => b.status === '已分配').length,
        bugData.filter(b => b.status === '处理中').length,
        bugData.filter(b => b.status === '待验证').length,
        bugData.filter(b => b.status === '已解决').length,
        bugData.filter(b => b.status === '已关闭').length,
        bugData.filter(b => b.status === '已拒绝').length
      ],
      backgroundColor: [
        '#9CA3AF', // 新建 - 灰色
        '#3B82F6', // 已分配 - 蓝色
        '#F59E0B', // 处理中 - 黄色
        '#8B5CF6', // 待验证 - 紫色
        '#10B981', // 已解决 - 绿色
        '#6B7280', // 已关闭 - 深灰色
        '#EF4444'  // 已拒绝 - 红色
      ]
    }
  ]
};

// 缺陷严重程度分布数据
export const bugSeverityData = {
  labels: ['低', '中', '高', '紧急'],
  datasets: [
    {
      data: [
        bugData.filter(b => b.severity === '低').length,
        bugData.filter(b => b.severity === '中').length,
        bugData.filter(b => b.severity === '高').length,
        bugData.filter(b => b.severity === '紧急').length
      ],
      backgroundColor: [
        '#10B981', // 低 - 绿色
        '#3B82F6', // 中 - 蓝色
        '#F59E0B', // 高 - 黄色
        '#EF4444'  // 紧急 - 红色
      ]
    }
  ]
};

// 缺陷类型分布数据
export const bugTypeData = {
  labels: ['功能缺陷', '性能缺陷', '安全缺陷', '界面缺陷', '兼容性缺陷'],
  datasets: [
    {
      data: [
        bugData.filter(b => b.type === '功能缺陷').length,
        bugData.filter(b => b.type === '性能缺陷').length,
        bugData.filter(b => b.type === '安全缺陷').length,
        bugData.filter(b => b.type === '界面缺陷').length,
        bugData.filter(b => b.type === '兼容性缺陷').length
      ],
      backgroundColor: [
        '#3B82F6', // 功能缺陷 - 蓝色
        '#F59E0B', // 性能缺陷 - 黄色
        '#EF4444', // 安全缺陷 - 红色
        '#8B5CF6', // 界面缺陷 - 紫色
        '#10B981'  // 兼容性缺陷 - 绿色
      ]
    }
  ]
};